﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ly1
{
    class Program1
    {
        static void Main(string[] args)
        {
            // 一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，
            //并显示出计算结果。
            //1、创建Calculate积累，其中包含两个整型的protected成员，用以接收用户输入的两个整数。
            //定义一个DisplayResult()虚方法，计算并输出结果。
            //2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
            //3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
            //4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。


            Console.WriteLine("请输入第一个整数：");
            int a = int.Parse(Console.ReadLine());

            Console.WriteLine("请输入第二个整数：");
            int b = int.Parse(Console.ReadLine());

            Console.WriteLine("请输入操作符：");
            char cr = char.Parse(Console.ReadLine());

            Calculate calculate = new Calculate() ;//定义一个类型是Calculate 名字叫calculate的变量

            switch (cr)
            {
                case '+':
                    /* Calculate calculate1 = new Jia(a, b);
                     Test2(calculate1);*/
                    //这段代码是优化前的代码 


                    //创建实例（对象）>>new Jia（a，b） 赋值给calculate
                    calculate = new Jia(a, b);
                    break;
                case '-':
                    calculate = new Jian(a, b);
                    break;
                case '*':
                    calculate = new Cheng(a, b);
                    break;
                case '/':
                    calculate = new Chu(a, b);
                    break;
                default:
                    Console.WriteLine("输入错误");//可要可不要的输入错误提示
                    break;
            }
            Test2(calculate);
        }

        public static void Test2(Calculate c)
        {
            c.DisplayResult();
        }
    }
}
